﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using NHAHANGLIENHOACHAY.SR_NHAHANG_BUS;
namespace NHAHANGLIENHOACHAY
{
    public partial class FormUser : DevComponents.DotNetBar.Office2007Form
    {
        private int trangthai = 0;//Ban đóng chưa mở
        private List<DataTable> list1 = new List<DataTable>();
        private List<DataTable> list2 = new List<DataTable>();
        List<BAN> listban = new List<BAN>();
        string tennd;
        Service1SoapClient bus = new Service1SoapClient();
        public FormUser(NGUOIDUNG dto)
        {
            tennd = dto.HoVaTen;
            InitializeComponent();
        }

        private void FormUser_Load(object sender, EventArgs e)
        {
            lblTenDangNhap.Text = tennd;
            KHUVUC[] arraykv;
            HINHTHUCKD dtohtkd;
            try
            {
                //Form Load danh sách khu vực
                arraykv = bus.LayDSKhuVuc();

                listV_KhuVuc.Items.Clear();
                for (int i = 0; i < arraykv.Length; i++)
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = arraykv[i].TenKhuVuc.ToString();
                    item.Name = arraykv[i].MaKhuVuc.ToString();
                    item.ImageIndex = 0;
                    listV_KhuVuc.Items.Add(item);
                }
                //Load danh sách bàn trong nhà hàng
                BAN[] arrayb;
                arrayb = bus.LayDSBan();
                listV_Ban.Items.Clear();
                for (int k = 0; k < arrayb.Length; k++)
                {
                    ListViewItem item = new ListViewItem();
                    BAN b = new BAN();
                    item.Text = arrayb[k].TenBan.ToString();
                    item.Name = arrayb[k].MaBan.ToString();
                    item.ImageIndex = 1;
                    item.Tag = "0";//Trang thai dong
                    listV_Ban.Items.Add(item);
                    //Dua vao list ban
                    b.MaBan = Int16.Parse(arrayb[k].MaBan.ToString());
                    b.TenBan = arrayb[k].TenBan.ToString();
                    b.TrangThai = 0;//Là đóng 
                    listban.Add(b);

                }
                //Load danh sách các loại món ăn
                LOAIMONAN[] arraylma;
                arraylma = bus.LayDSLoaiMonAn();

                listV_LoaiMonAn.Items.Clear();
                for (int j = 0; j < arraylma.Length; j++)
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = arraylma[j].TenLoaiMonAn.ToString();
                    item.Name = arraylma[j].MaLoaiMonAn.ToString();
                    item.ImageIndex = 2;
                    listV_LoaiMonAn.Items.Add(item);
                }
                //Load danh sách các  món ăn  
                MONAN[] arrayma;
                arrayma = bus.LayDSMonAn();         
                listV_MonAn.Items.Clear();
                for (int m = 0; m < arrayma.Length; m++)
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = arrayma[m].TenMonAn.ToString();
                    item.Name = arrayma[m].MaMonAn.ToString();
                    item.ImageIndex = 3;
                    listV_MonAn.Items.Add(item);
                }
            }
            catch
            {
 
            }

        }

        private void listV_KhuVuc_SelectedIndexChanged(object sender, EventArgs e)
        {
            BAN[] arrayb;
            for (int i = 0; i < listV_KhuVuc.Items.Count; i++)
            {
                if (listV_KhuVuc.Items[i].Selected)
                {
                    //MessageBox.Show(listV_KhuVuc.Items[i].Name);
                    int makv = int.Parse(listV_KhuVuc.Items[i].Name.ToString());
                    arrayb = bus.LayDSBanTheoKhuVuc(makv);
                    //đưa vào listview ban
                    listV_Ban.Items.Clear();
                    for (int j = 0; j < arrayb.Length; j++)
                    {
                        //So sanh cai ma ban trong cái mảng này với cái trong list nếu trùng thì lấy trong list ra
                        for (int k = 0; k < listban.Count; k++)
                        {
                            if (arrayb[j].MaBan == listban[k].MaBan)
                            {

                                try
                                {
                                    ListViewItem item = new ListViewItem();
                                    item.Text = listban[k].TenBan.ToString();
                                    item.Name = listban[k].MaBan.ToString();
                                    if (listban[k].TrangThai == 0)
                                    {
                                        item.ImageIndex = 1;
                                    }
                                    if (listban[k].TrangThai == 1)
                                    {
                                        item.ImageIndex = 4;
                                    }
                                    listV_Ban.Items.Add(item);
                                }
                                catch
                                {

                                }
                            }

                        }

                    }


                }
            }
        }

        private void listV_LoaiMonAn_SelectedIndexChanged(object sender, EventArgs e)
        {
            MONAN[] arrayma;
            for (int i = 0; i < listV_LoaiMonAn.Items.Count; i++)
            {
                if (listV_LoaiMonAn.Items[i].Selected)
                {
                    int maloai = int.Parse(listV_LoaiMonAn.Items[i].Name.ToString());
                    arrayma = bus.LayDSMonAnTheoMaLoai(maloai);
                    //đưa vào listview ban
                    listV_MonAn.Items.Clear();
                    for (int j = 0; j < arrayma.Length; j++)
                    {
                        try
                        {
                            ListViewItem item = new ListViewItem();
                            item.Text = arrayma[j].TenMonAn.ToString();
                            item.Name = arrayma[j].MaMonAn.ToString();
                            item.ImageIndex = 3;
                            listV_MonAn.Items.Add(item);
                        }
                        catch
                        {

                        }
                    }


                }
            }
        }

        private void bttBatDau_Click(object sender, EventArgs e)
        {
            //Load danh sach cac loai phieu
            //Set trang thai cho ban la đã mở =1

            ////////////////////
            //Kiêm tra trạng thái bàn .nếu đã mở rồi thì không bắt đầu nữa
            for (int i = 0; i < listV_Ban.Items.Count; i++)
            {
                if (listV_Ban.Items[i].Selected)
                {
                    int maban = Int16.Parse(listV_Ban.Items[i].Name.ToString());
                    string chuoimaban = listV_Ban.Items[i].Name.ToString();
                    for (int j = 0; j < listban.Count; j++)
                    {
                        if (listban[j].MaBan == maban)
                        {
                            if (listban[j].TrangThai == 1)
                            {
                                MessageBox.Show("Bàn này thể bắt đầu ,đang ở trạng thái mở");

                            }
                            else
                            {

                                trangthai = 1;
                                bttBatDau.Enabled = false;
                                //Xoa cac thu ton tai bang rỗng
                                dgv_DSMA.Rows.Clear();
                                txtBan.Text = null;
                                date_Ngay.Value = DateTime.MinValue;
                                txtGiamGia.Text = null;
                                txtMucGiaChenhLech.Text = null;
                                txtTongTien.Text = null;
                                txtGhiChu.Text = null;
                                cbbLoaiPhieu.DataSource = null;
                                ///////////////////
                                for (int i1 = 0; i1 < listV_Ban.Items.Count; i1++)
                                {
                                    if (listV_Ban.Items[i1].Selected)
                                    {
                                        lblMaBan.Text = listV_Ban.Items[i1].Name;
                                        txtBan.Text = listV_Ban.Items[i1].Text;
                                        date_Ngay.Value = DateTime.Now;
                                        cbbLoaiPhieu.DataSource = bus.LayDSLoaiPhieu();
                                        cbbLoaiPhieu.DisplayMember = "TenLoaiPhieuDat";
                                        cbbLoaiPhieu.ValueMember = "MaLoaiPhieuDat";
                                        txtGiamGia.Text = " 0";
                                        txtMucGiaChenhLech.Text = "0";

                                    }
                                }
                            }

                        }
                    }
                }
            }
        }

        private void bttHuy_Click(object sender, EventArgs e)
        {
            //Set trang thái là chưa có bàn nào mở
            //Kiem tra ban đang ở trạng thái nào ? nếu là đang mỏ thì ko cho hủy ,còn nếu đang trống thì hủy dc
            for (int i = 0; i < listV_Ban.Items.Count; i++)
            {
                if (listV_Ban.Items[i].Selected)
                {
                    int maban = Int16.Parse(listV_Ban.Items[i].Name.ToString());
                    for (int j = 0; j < listban.Count; j++)
                    {
                        if (listban[j].MaBan == maban)
                        {
                            if (listban[j].TrangThai == 1)
                            {
                                MessageBox.Show("Bàn này không thể hủy");
                            }
                            else
                            {
                                bttBatDau.Enabled = true;
                                txtBan.Text = null;
                                date_Ngay.Value = DateTime.MinValue;
                                txtGiamGia.Text = null;
                                cbbLoaiPhieu.DataSource = null;
                            }

                        }
                    }
                }
            }

        }

        private void listV_MonAn_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {

                for (int i = 0; i < listV_MonAn.Items.Count; i++)
                {
                    if (listV_MonAn.Items[i].Selected)
                    {
                        MONAN dto = new MONAN();
                        FormNhapSL fr = new FormNhapSL();
                        fr.ShowDialog();
                        if (fr.sl != 0)
                        {
                            //Doc du lieu tu cai ma mon an
                            int mama = Int16.Parse(listV_MonAn.Items[i].Name.ToString());
                            dto = bus.LayDSMonAnTheoMa(mama);
                            //Dua du lieu vao lưới
                            int thanhtien = fr.sl * Int16.Parse(dto.GiaTien.ToString());
                            dgv_DSMA.Rows.Add(dto.TenMonAn, fr.sl.ToString(), dto.GiaTien, thanhtien.ToString(), mama.ToString(), dto.DonVi);
                        }

                        else
                        {

                        }
                        int tongtien = 0;
                        for (int j = 0; j < dgv_DSMA.Rows.Count; j++)
                        {
                            tongtien = tongtien + Int32.Parse(dgv_DSMA.Rows[j].Cells["colThanhTien"].Value.ToString());
                        }

                        txtTongTien.Text = tongtien.ToString();


                    }
                }
            }
            catch
            {

            }

        }

        private void bttLuu_Click(object sender, EventArgs e)
        {
            DataTable dt1 = new DataTable();
            DataTable dt2 = new DataTable();
            try
            {
                //Khoi tạo dt1
                dt1.Columns.Add("MaBan", typeof(string));
                dt1.Columns.Add("TenBan", typeof(string));
                dt1.Columns.Add("MucGiaChenhLech", typeof(string));
                dt1.Columns.Add("GhiChu", typeof(string));
                dt1.Columns.Add("GioVao", typeof(DateTime));
                dt1.Columns.Add("GiamGia", typeof(string));
                dt1.Columns.Add("TongTien", typeof(string));
                //Khoi tao cai dt2
                dt2.Columns.Add("MaBan", typeof(string));
                dt2.Columns.Add("TenMon", typeof(string));
                dt2.Columns.Add("SL", typeof(string));
                dt2.Columns.Add("GiaBan", typeof(string));
                dt2.Columns.Add("ThanhTien", typeof(string));
                dt2.Columns.Add("MaMon", typeof(string));
                dt2.Columns.Add("DonVi", typeof(string));
                //Kiem tra luoi rong thi khong luu
                if (dgv_DSMA.Rows.Count == 0)
                {
                    MessageBox.Show("Vui lòng chọn món trươc khi lưu");
                }
                else
                {
                    //Luu vào dt1 trước xong rồi lưu vào dt2 
                    dt1.Rows.Add(lblMaBan.Text, txtBan.Text, txtMucGiaChenhLech.Text, txtGhiChu.Text, date_Ngay.Value, txtGiamGia.Text, txtTongTien.Text);
                    list1.Add(dt1);
                    //Luu dt2 vào 
                    for (int i = 0; i < dgv_DSMA.Rows.Count; i++)
                    {
                        dt2.Rows.Add(lblMaBan.Text, dgv_DSMA.Rows[i].Cells["colTenMon"].Value.ToString(), dgv_DSMA.Rows[i].Cells["colSL"].Value.ToString(), dgv_DSMA.Rows[i].Cells["colGiaBan"].Value.ToString(), dgv_DSMA.Rows[i].Cells["colThanhTien"].Value.ToString(), dgv_DSMA.Rows[i].Cells["colMaMon"].Value.ToString(), dgv_DSMA.Rows[i].Cells["colDonVi"].Value.ToString());
                    }
                    list2.Add(dt2);
                    //Đổi màu bàn
                    for (int j = 0; j < listV_Ban.Items.Count; j++)
                    {
                        if (listV_Ban.Items[j].Selected)
                        {
                            //Tìm cái mả bàn này trong cai list ban để set về trạng thái là đang có khách 
                            for (int k = 0; k < listban.Count; k++)
                            {
                                if (listban[k].MaBan == Int16.Parse(listV_Ban.Items[j].Name.ToString()))
                                {
                                    //đổi màu đổi trang thái luôn
                                    listV_Ban.Items[j].ImageIndex = 4;
                                    listban[k].TrangThai = 1;
                                }
                            }
                        }
                    }
                    //Hien nút bắt đầu
                    this.bttBatDau.Enabled = true;
                }
            }
            catch
            {

            }

        }

        private void listV_Ban_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Nếu nó đang là trạng thái đã mở thì show dữ liệu cũ ra ứng với cái mả bàn chọn
            for (int i = 0; i < listV_Ban.Items.Count; i++)
            {
                if (listV_Ban.Items[i].Selected)
                {
                    //Tìm cái mả bàn này nằm trong cái list bàn
                    int maban = Int16.Parse(listV_Ban.Items[i].Name.ToString());
                    for (int j = 0; j < listban.Count; j++)
                    {
                        if (listban[j].MaBan == maban)
                        {
                            if (listban[j].TrangThai == 1)
                            {
                                //Thì show du lieu ra form
                                //Duyet hai cai list1
                                for (int i12 = 0; i12 < list1.Count; i12++)
                                {
                                    for (int i121 = 0; i121 < list1[i12].Rows.Count; i121++)
                                    {
                                        if (Int16.Parse(list1[i12].Rows[i121]["MaBan"].ToString()) == maban)
                                        {
                                            lblMaBan.Text = list1[i12].Rows[i121]["MaBan"].ToString();
                                            txtBan.Text = list1[i12].Rows[i121]["TenBan"].ToString();
                                            date_Ngay.Value = Convert.ToDateTime(list1[i12].Rows[i121]["GioVao"].ToString());
                                            cbbLoaiPhieu.DataSource = bus.LayDSLoaiPhieu();
                                            cbbLoaiPhieu.DisplayMember = "TenLoaiPhieuDat";
                                            cbbLoaiPhieu.ValueMember = "MaLoaiPhieuDat";
                                            txtGiamGia.Text = list1[i12].Rows[i121]["GiamGia"].ToString();
                                            txtMucGiaChenhLech.Text = list1[i12].Rows[i121]["MucGiaChenhLech"].ToString();
                                            txtTongTien.Text = list1[i12].Rows[i121]["TongTien"].ToString();

                                        }
                                    }
                                }
                                //Duyet cai list2 dua vao luoi
                                //Xoa cai luoi cu
                                dgv_DSMA.Rows.Clear();
                                for (int i13 = 0; i13 < list2.Count; i13++)
                                {
                                    for (int i131 = 0; i131 < list2[i13].Rows.Count; i131++)
                                    {
                                        if (Int16.Parse(list2[i13].Rows[i131]["MaBan"].ToString()) == maban)
                                        {
                                            lblMaBan.Text = list2[i13].Rows[i131]["MaBan"].ToString();
                                            dgv_DSMA.Rows.Add(list2[i13].Rows[i131]["TenMon"].ToString(), list2[i13].Rows[i131]["SL"].ToString(), list2[i13].Rows[i131]["GiaBan"].ToString(), list2[i13].Rows[i131]["ThanhTien"].ToString(), list2[i13].Rows[i131]["MaMon"].ToString(), list2[i13].Rows[i131]["DonVi"].ToString());


                                        }
                                    }
                                }



                            }
                            else
                            {
                                //Khong làm gì hết để trống 

                            }
                        }
                    }

                }
            }

        }
        private int timidlist1(int maban)
        {
            int kq = 0;
            for (int i12 = 0; i12 < list1.Count; i12++)
            {
                for (int i121 = 0; i121 < list1[i12].Rows.Count; i121++)
                {
                    if (Int16.Parse(list1[i12].Rows[i121]["MaBan"].ToString()) == maban)
                    {
                        kq = i12;

                    }
                }
            }
            return kq;

        }
        private int timidlist2(int maban)
        {
            int kq = 0;
            for (int i12 = 0; i12 < list2.Count; i12++)
            {
                for (int i121 = 0; i121 < list2[i12].Rows.Count; i121++)
                {
                    if (Int16.Parse(list2[i12].Rows[i121]["MaBan"].ToString()) == maban)
                    {
                        kq = i12;

                    }
                }
            }
            return kq;

        }
        private int timidlistban(int maban)
        {
            int kq = 0;
            for (int i = 0; i < listban.Count; i++)
            {

                if (listban[i].MaBan == maban)
                {
                    kq = i;

                }

            }
            return kq;

        }
        private bool KiemTraBan(int maban)
        {

            bool kq = false;
            for (int i = 0; i < listban.Count; i++)
            {
                if (listban[i].MaBan == maban && listban[i].TrangThai == 1)//Đã mỡ
                {
                    kq = true;

                }

            }
            return kq;
        }
        private void bttThanhToan_Click(object sender, EventArgs e)
        {
            //Luu vao bảng hóa đơn
            //Kiem tra bàn đả mở mới tính tiền 
            bool kq = false;
            HOADON hd = new HOADON();
            HOADON tam = new HOADON();
            hd.KhuyenMai = null;
            hd.PhuongThucThanhToan = null;
            hd.ThanhTien = Int32.Parse(txtTongTien.Text.ToString());
            hd.ThoiGian = date_Ngay.Value;
            hd.TiGia = null;
            hd.VAT = null;
            hd.TrangThaiHoaDon = 0;
            int mahd, mabanct;

            mabanct = Int16.Parse(lblMaBan.Text.ToString());

            for (int i = 0; i < listV_Ban.Items.Count; i++)
            {
                if (listV_Ban.Items[i].Selected)
                {
                    //Đang ở trạng thái mở 
                    int maban = Int16.Parse(listV_Ban.Items[i].Name.ToString());
                    //Kiem tra ban nay dang mo mới cho thanh toán 
                    if (KiemTraBan(maban))
                    {
                        //Luu vào bản hóa đơn
                        if (bus.ThemHoaDon(hd))
                        {
                            tam = bus.LayMaHoaDon();
                            mahd = tam.MaHoaDon;
                            //Thêm chi tiết hóa đơn
                            for (int j = 0; j < dgv_DSMA.Rows.Count; j++)
                            {
                                CTHOADON cthd = new CTHOADON();
                                cthd.MaHoaDon = mahd;
                                cthd.MaBan = mabanct;
                                cthd.MaMonAn = Int16.Parse(dgv_DSMA.Rows[j].Cells["colMaMon"].Value.ToString());
                                cthd.TenMonAn = dgv_DSMA.Rows[j].Cells["colTenMon"].Value.ToString();
                                cthd.SoLuong = Int16.Parse(dgv_DSMA.Rows[j].Cells["colSL"].Value.ToString());
                                cthd.DonVi = dgv_DSMA.Rows[j].Cells["colDonVi"].Value.ToString();
                                cthd.GiaTien = Int32.Parse(dgv_DSMA.Rows[j].Cells["colThanhTien"].Value.ToString());
                                if (bus.ThemChiTietHoaDon(cthd))
                                {
                                    kq = true;
                                }
                            }
                            if (kq == true)
                            {
                                MessageBox.Show("Thanh toán thành công ");
                            }
                            else
                            {
                                MessageBox.Show("Không thể thanh toán được");
                            }

                        }
                        //Luu vào bản chitiet hóa đơn


                        //Tien hanh xoa 
                        bttBatDau.Enabled = true;
                        txtBan.Text = null;
                        date_Ngay.Value = DateTime.MinValue;
                        txtGiamGia.Text = null;
                        cbbLoaiPhieu.DataSource = null;
                        txtMucGiaChenhLech.Text = null;
                        txtTongTien.Text = null;
                        dgv_DSMA.Rows.Clear();
                        //Xoa các gia trị trong list1
                        int id1 = timidlist1(maban);
                        list1.RemoveAt(id1);
                        //Xoa gia trị trong list2
                        int id2 = timidlist2(maban);
                        list2.RemoveAt(id2);
                        //Tiến hành đổi trạng thái trong list

                        int idlb = timidlistban(maban);
                        listban[idlb].TrangThai = 0;
                        //Tiến hành đổi hình listView
                        listV_Ban.Items[i].ImageIndex = 1;


                    }
                    else
                    {
                        MessageBox.Show("Bàn chưa lưu không thể thanh toán được");
                    }

                }
            }
        }

        private void txtKhachDua_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (txtTongTien != null)
                {
                    int t = Int32.Parse(txtKhachDua.Text.ToString()) - Int32.Parse(txtTongTien.Text.ToString());
                    txtTraLaiKhach.Text = t.ToString();
                }
            }
            catch
            {

            }

        }

        private void dgv_DSMA_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 6)//Xóa
            {
                dgv_DSMA.Rows.RemoveAt(e.RowIndex);

            }
        }

        private void buttonX6_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void labelX11_Click(object sender, EventArgs e)
        {
            Close();
        }

    }
}
